Database First Approach হলো Entity Framework এর একটি পদ্ধতি, যেখানে আপনি প্রথমে একটি ডেটাবেস তৈরি করেন এবং তারপর ডেটাবেসের সঠিক Entity Models (Classes) তৈরি করতে Entity Framework ব্যবহার করেন। এটি বিশেষভাবে কার্যকর যখন আপনার কাছে একটি পূর্ব-নির্মিত ডেটাবেস থাকে এবং আপনি সেটির সাথে কাজ করতে চান। এই পদ্ধতিতে, ডেটাবেসের টেবিল থেকে Entity Model তৈরি করা হয়, যাতে আপনার কোডে ডেটাবেসের কাঠামো এবং সম্পর্কগুলো রিপ্রেজেন্ট করা যায়।
প্রথমে, আপনার ডেটাবেস তৈরি করুন। যদি আপনি ইতিমধ্যে একটি ডেটাবেস তৈরি করে থাকেন, তাহলে সেক্ষেত্রে আপনি সেই ডেটাবেস ব্যবহার করতে পারবেন। ডেটাবেস তৈরি করতে আপনি SQL Server Management Studio (SSMS) বা SQL Server LocalDB ব্যবহার করতে পারেন।
উদাহরণস্বরূপ, একটি Student টেবিল তৈরি করা যাক:
CREATE DATABASE EFCoreDemoDb;
USE EFCoreDemoDb;
CREATE TABLE Students (
StudentId INT PRIMARY KEY IDENTITY,
Name NVARCHAR(100),
Age INT
);
এই SQL কোডটি একটি Students টেবিল তৈরি করবে যার মধ্যে StudentId, Name, এবং Age ফিল্ড থাকবে।
এখন আপনি Entity Framework থেকে Database First পদ্ধতিতে Entity Model তৈরি করবেন। এই কাজটি করার জন্য Scaffold-DbContext কমান্ড ব্যবহার করা হয়।
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=EFCoreDemoDb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
এখানে:
Models
ফোল্ডারটি তৈরি হবে)।এই কমান্ডটি চালানোর পর Entity Framework আপনার ডেটাবেসের টেবিলের ভিত্তিতে Entity Classes এবং DbContext ক্লাস তৈরি করবে।
Entity Framework স্বয়ংক্রিয়ভাবে একটি DbContext ক্লাস তৈরি করবে, যা আপনার ডেটাবেসের সাথে কাজ করবে। উদাহরণস্বরূপ, ApplicationDbContext
নামে একটি DbContext ক্লাস তৈরি হবে, যা Students টেবিলের Entity Model সহ আসে।
public class ApplicationDbContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=EFCoreDemoDb;Trusted_Connection=True;");
}
}
এখানে, DbSet Students টেবিলের প্রতিনিধিত্ব করে।
এখন আপনি আপনার ডেটাবেস থেকে ডেটা পড়তে বা নতুন ডেটা যোগ করতে পারবেন। উদাহরণস্বরূপ:
using (var context = new ApplicationDbContext())
{
// ডেটা পড়া
var student = context.Students.FirstOrDefault();
Console.WriteLine($"Student Name: {student.Name}, Age: {student.Age}");
// নতুন ডেটা যোগ করা
var newStudent = new Student { Name = "Jane Doe", Age = 22 };
context.Students.Add(newStudent);
context.SaveChanges();
Console.WriteLine("New student added successfully.");
}
এই কোডটি Students টেবিল থেকে প্রথম student পড়বে এবং একটি নতুন student টেবিলের মধ্যে যোগ করবে।
Database First Approach এ আপনি প্রথমে একটি ডেটাবেস তৈরি করেন এবং তারপর সেই ডেটাবেসের ভিত্তিতে Entity Framework ব্যবহার করে Entity Classes তৈরি করেন। এই পদ্ধতি আপনাকে পূর্বনির্ধারিত ডেটাবেসের সাথে সহজে কাজ করতে সাহায্য করে। যেহেতু এটি একটি স্বয়ংক্রিয় পদ্ধতি, তাই ডেটাবেসের কাঠামো ও সম্পর্কগুলির জন্য যথাযথ Entity Models তৈরি করা সহজ হয়।
Entity Framework এ, Database First অ্যাপ্রোচ ব্যবহার করে আপনি সরাসরি একটি বিদ্যমান ডেটাবেস থেকে Entity Models তৈরি করতে পারেন। এই প্রক্রিয়ায়, Entity Framework ডেটাবেসের কাঠামো (যেমন টেবিল, কলাম, এবং রিলেশনশিপ) থেকে Entity ক্লাস এবং DbContext তৈরি করে, যা পরে আপনার কোডে ব্যবহার করা যায়। এটি ডেটাবেস ডিজাইন করা হয়ে গেলে বা আপনি যদি ইতিমধ্যে একটি ডেটাবেস দিয়ে কাজ করতে চান তখন উপকারী হয়।
প্রথমে, আপনি একটি Entity Framework Core অ্যাপ্লিকেশন তৈরি করবেন এবং একটি ডেটাবেস সংযোগ স্ট্রিং কনফিগার করবেন। এই কনফিগারেশনটি সাধারণত appsettings.json
ফাইলে রাখা হয়।
appsettings.json এ সংযোগ স্ট্রিং:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=MyDatabase;Trusted_Connection=True;"
}
}
Entity Framework Core একটি টুল সরবরাহ করে, যা Scaffold-DbContext কমান্ডের মাধ্যমে ডেটাবেস থেকে Entity Model তৈরি করতে সহায়তা করে। এই কমান্ডটি ডেটাবেস টেবিলগুলোকে Entity ক্লাসে রূপান্তরিত করে এবং সম্পর্কিত DbContext তৈরি করে।
এটা করার জন্য, আপনি নীচের পদক্ষেপগুলো অনুসরণ করতে পারেন:
Microsoft.EntityFrameworkCore.SqlServer
এবং Microsoft.EntityFrameworkCore.Tools
প্যাকেজগুলো অন্তর্ভুক্ত করে।NuGet প্যাকেজ ইনস্টল করার কমান্ড:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
Scaffold-DbContext "Server=localhost;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context ApplicationDbContext -f
কমান্ড ব্যাখ্যা:
Models
ফোল্ডারে)।উপরের কমান্ড চালানোর পরে, Entity Framework আপনার ডেটাবেসের প্রতিটি টেবিলের জন্য একটি Entity ক্লাস তৈরি করবে এবং আপনার Models
ফোল্ডারে সেগুলো সেভ করবে। প্রতিটি Entity ক্লাস একটি টেবিলের প্রতিনিধিত্ব করবে এবং এর প্রপার্টিগুলি টেবিলের কলামগুলির সাথে মিলে যাবে।
উদাহরণস্বরূপ, যদি আপনার ডেটাবেসে একটি Users
টেবিল থাকে, তাহলে Entity Framework একটি User
ক্লাস তৈরি করবে:
public partial class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public ICollection<Order> Orders { get; set; } // Relationship
}
এছাড়া, DbContext ক্লাসও তৈরি হবে, যেখানে সকল Entity গুলোর জন্য DbSet প্রপার্টি থাকবে:
public partial class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public virtual DbSet<User> Users { get; set; }
public virtual DbSet<Order> Orders { get; set; }
}
এই DbContext ক্লাসটির মাধ্যমে আপনি ডেটাবেসের সকল টেবিলের সাথে যোগাযোগ করতে পারবেন।
ডেটাবেস থেকে Entity মডেল তৈরি করার পর, আপনি যদি কোনও কনফিগারেশন পরিবর্তন করতে চান, যেমন প্রপার্টির জন্য Data Annotations বা Fluent API ব্যবহার করা, তাহলে তা OnModelCreating
মেথডে করতে হবে।
উদাহরণস্বরূপ:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasKey(u => u.UserId);
modelBuilder.Entity<User>()
.Property(u => u.UserName)
.HasMaxLength(50)
.IsRequired();
}
এইভাবে আপনি মডেলের কনফিগারেশন পরিবর্তন করতে পারেন।
যদি আপনার ডেটাবেসে কোনও পরিবর্তন ঘটে, যেমন নতুন টেবিল তৈরি করা বা কোনও কলাম পরিবর্তন করা, আপনি সেই পরিবর্তনগুলি Entity Framework মডেলের সাথে সিঙ্ক করার জন্য Migrations ব্যবহার করতে পারেন।
মাইগ্রেশন তৈরি করার জন্য:
dotnet ef migrations add InitialMigration
এটি একটি নতুন মাইগ্রেশন তৈরি করবে, যা আপনার Entity Model এবং ডেটাবেসের মধ্যে সিঙ্ক্রোনাইজেশন নিশ্চিত করবে।
ডেটাবেস আপডেট করতে:
dotnet ef database update
এটি আপনার ডেটাবেসকে সর্বশেষ মাইগ্রেশন অনুযায়ী আপডেট করবে।
Database First পদ্ধতিতে Entity Framework ব্যবহার করে আপনি একটি বিদ্যমান ডেটাবেস থেকে সরাসরি Entity Models এবং DbContext ক্লাস তৈরি করতে পারেন। এই পদ্ধতিটি ডেটাবেস-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য খুবই উপকারী, যেখানে আপনি ডেটাবেসের কাঠামো পরিবর্তন না করে সরাসরি কোডের মধ্যে কাজ করতে চান। Scaffold-DbContext
কমান্ডের মাধ্যমে আপনি দ্রুত মডেল তৈরি করতে পারবেন এবং মডেল কনফিগারেশন ও মাইগ্রেশন ব্যবস্থাপনা সহজে করতে পারবেন।
Entity Framework (EF) প্রজেক্টে Model এবং DbContext ফাইল দুটি অত্যন্ত গুরুত্বপূর্ণ। Model ফাইলগুলিতে ডেটাবেস টেবিলের জন্য প্রয়োজনীয় ক্লাসগুলো সংজ্ঞায়িত করা হয়, এবং DbContext ফাইলটি ডেটাবেসের সাথে যোগাযোগ এবং ডেটাবেস অপারেশনগুলির জন্য ব্যবহৃত হয়। EF প্রজেক্টে এই দুটি ফাইল সঠিকভাবে ম্যানেজ করা নিশ্চিত করে যে ডেটাবেস এবং কোডের মধ্যে সঠিক সম্পর্ক স্থাপন হচ্ছে এবং ডেটা সঠিকভাবে পরিচালিত হচ্ছে।
Model ফাইলটি মূলত সেই ক্লাসগুলি ধারণ করে যা ডেটাবেসের টেবিলের প্রতিনিধিত্ব করে। প্রতিটি Model Class ডেটাবেস টেবিলের একটি একক রেকর্ডের প্রতিনিধিত্ব করে, এবং এটি Entity Class হিসেবে পরিচিত।
Model Class তৈরি করার সময়, সাধারণভাবে প্রপার্টিগুলি ডেটাবেস টেবিলের কলামের সাথে মিলে যায়। আপনি Data Annotations এবং Fluent API ব্যবহার করে এই Model গুলোর কনফিগারেশন করতে পারেন। উদাহরণস্বরূপ, যদি আপনার একটি Student
টেবিল থাকে, তাহলে আপনি Student
নামে একটি Entity Class তৈরি করবেন।
উদাহরণ:
public class Student
{
public int StudentId { get; set; } // Primary Key
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
DbContext ফাইলের মধ্যে এই Student
ক্লাসকে একটি DbSet
হিসেবে সংজ্ঞায়িত করা হয়, যা ডেটাবেসে Student
টেবিলের প্রতিনিধিত্ব করবে।
DbContext হচ্ছে Entity Framework এর কেন্দ্রবিন্দু। এটি ডেটাবেসের সাথে যোগাযোগের জন্য প্রয়োজনীয় সকল লজিক ধারণ করে। DbContext
ক্লাসটি ডেটাবেসের সাথে সমস্ত CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করে এবং Entity Class গুলোর মাধ্যমে ডেটাবেস টেবিলগুলোর সাথে সম্পর্ক স্থাপন করে।
DbContext একটি বিশেষ ক্লাস যা DbContext
থেকে ইনহেরিট করে এবং এতে একটি বা একাধিক DbSet
প্রপার্টি থাকতে পারে, যা Entity Class গুলোর প্রতিনিধিত্ব করবে। প্রতিটি DbSet
একটি টেবিলের প্রতিনিধিত্ব করে।
উদাহরণ:
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Teacher> Teachers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Connection string configuration
optionsBuilder.UseSqlServer("your_connection_string_here");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Fluent API configuration can be added here
modelBuilder.Entity<Student>().HasKey(s => s.StudentId);
}
}
এখানে:
Students
টেবিলের প্রতিনিধিত্ব করে।Teachers
টেবিলের প্রতিনিধিত্ব করে।ডেটাবেসের মডেল এবং DbContext ফাইলগুলোর সঠিকভাবে ম্যানেজমেন্ট করা অত্যন্ত গুরুত্বপূর্ণ, কারণ এর উপর নির্ভর করে আপনার অ্যাপ্লিকেশনের ডেটাবেস অপারেশনগুলির কার্যকারিতা এবং পারফরম্যান্স।
Student
ক্লাসের প্রপার্টি StudentId
টেবিলের primary key হবে।Required
, StringLength
, Key
, ইত্যাদি।উদাহরণ:
public class Student
{
[Key]
public int StudentId { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
public int Age { get; set; }
}
DbSet
প্রপার্টি থাকতে হবে, যা সেই Entity ক্লাসের সঙ্গে সম্পর্কিত ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে।appsettings.json
বা কোডের মধ্যে সরাসরি কনফিগার করা হয়।OnModelCreating
মেথড ব্যবহার করুন। Fluent API মাধ্যমে ডেটাবেস কনফিগারেশন করা যেতে পারে।উদাহরণ:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasKey(s => s.StudentId);
modelBuilder.Entity<Student>()
.Property(s => s.Name)
.IsRequired()
.HasMaxLength(100);
}
এটি গুরুত্বপূর্ণ যে, যখন আপনার ডেটাবেস মডেল পরিবর্তিত হয় (যেমন নতুন প্রপার্টি যোগ করা বা প্রপার্টি মুছে ফেলা), তখন ডেটাবেসেও এসব পরিবর্তন সিঙ্ক করা প্রয়োজন। EF আপনাকে Migrations সিস্টেমের মাধ্যমে এটি করার সুবিধা দেয়।
Add-Migration
কমান্ড ব্যবহার করা হয়।Update-Database
কমান্ড ব্যবহার করা হয়।উদাহরণ:
Add-Migration InitialCreate
Update-Database
Model এবং DbContext ফাইল সঠিকভাবে ম্যানেজমেন্ট করা হলে আপনার Entity Framework প্রজেক্টের কার্যকারিতা উন্নত হয়। Entity ক্লাস এবং DbContext ক্লাসের মধ্যে সঠিক সম্পর্ক স্থাপন এবং কনফিগারেশন করলে, ডেটাবেসের সঙ্গে কাজ করা অনেক সহজ এবং কার্যকর হয়ে ওঠে। EF-এ মডেল ও ডেটাবেসের সিঙ্ক্রোনাইজেশন এবং মাইগ্রেশন ব্যবস্থার মাধ্যমে ডেটাবেসের পরবর্তীতে পরিবর্তন করা আরও সহজ হয়ে যায়।
Code First পদ্ধতিতে, যখন ডেটাবেসে কোনো পরিবর্তন ঘটে, যেমন টেবিলের নতুন কলাম যোগ করা বা কোনো কলাম পরিবর্তন করা, তখন এই পরিবর্তনগুলো মডেল (যেমন, Entity ক্লাস) এর সাথে সিঙ্ক্রোনাইজ করা প্রয়োজন। EF Core এই কাজটি মাইগ্রেশন ব্যবস্থার মাধ্যমে পরিচালনা করে। মাইগ্রেশন একটি পদ্ধতি যা ডেটাবেস এবং মডেল এর মধ্যে পরিবর্তনগুলো ট্র্যাক করে এবং তাদের আপডেট করতে সহায়তা করে।
প্রথমেই, ডেটাবেসে যে কোনো পরিবর্তন করার পর, আপনি মডেল ক্লাস এবং DbContext এ পরিবর্তন করবেন। এরপর, আপনি Entity Framework এর মাইগ্রেশন ব্যবস্থাকে ব্যবহার করে ডেটাবেসের সাথে সিঙ্ক করতে পারবেন। এখানে কিছু ধাপ দেওয়া হলো যেগুলি আপনি অনুসরণ করতে পারেন:
ধরা যাক, আপনি একটি Student
ক্লাসে একটি নতুন প্রপার্টি যোগ করেছেন:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
// নতুন প্রপার্টি যোগ করা হয়েছে
public string Email { get; set; }
}
এখন, আপনি মডেল ক্লাসে এই পরিবর্তনটি সম্পন্ন করেছেন।
এখন, আপনি ডেটাবেসে এই পরিবর্তনগুলো প্রয়োগ করতে চাইলে আপনাকে একটি নতুন মাইগ্রেশন তৈরি করতে হবে। Visual Studio এর Package Manager Console বা .NET CLI ব্যবহার করে আপনি মাইগ্রেশন তৈরি করতে পারেন।
Visual Studio Package Manager Console এ:
Add-Migration AddEmailToStudent
এটি একটি নতুন মাইগ্রেশন তৈরি করবে যার নাম হবে AddEmailToStudent
। এই মাইগ্রেশনের মধ্যে কোডের পরিবর্তন অনুযায়ী ডেটাবেসে পরিবর্তন করার জন্য প্রয়োজনীয় স্ক্রিপ্ট থাকবে।
মাইগ্রেশন তৈরি হওয়ার পর, আপনি ডেটাবেসে সেই পরিবর্তনগুলি প্রয়োগ করতে Update-Database
কমান্ড ব্যবহার করবেন। এটি ডেটাবেসের স্কিমা আপডেট করবে এবং নতুন প্রপার্টি Email
যুক্ত হবে।
Visual Studio Package Manager Console এ:
Update-Database
এটি ডেটাবেসের মধ্যে মাইগ্রেশন কার্যকর করবে এবং আপনার মডেল ক্লাসের সাথে ডেটাবেসের স্কিমা সিঙ্ক করবে।
আপনি যদি মাইগ্রেশন কোড দেখতে চান, তাহলে এটি সাধারণত Migrations ফোল্ডারে সংরক্ষিত হবে। সেখানে দুটি ফাইল থাকবে:
এটি একটি উদাহরণ হতে পারে:
public partial class AddEmailToStudent : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Email",
table: "Students",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Email",
table: "Students");
}
}
এটি দেখায় কিভাবে Email
কলাম Students
টেবিলে যুক্ত হয়েছে এবং মাইগ্রেশন প্রয়োগ করা হলে কী পরিবর্তন ঘটবে।
যদি আপনি মনে করেন যে এই মাইগ্রেশনটি ভুল ছিল বা আপনি আগের সংস্করণে ফিরে যেতে চান, তাহলে Remove-Migration
কমান্ড ব্যবহার করে মাইগ্রেশনটি রদ (rollback) করতে পারবেন।
Visual Studio Package Manager Console এ:
Remove-Migration
এটি আপনার শেষ মাইগ্রেশনটি রিমুভ করবে এবং কোডের পরিবর্তন পুনরায় সিঙ্ক করবে।
কখনো কখনো ডেটাবেসে নতুন কলাম বা টেবিল যোগ করার পর কিছু ডিফল্ট ডেটা সিডিং (seeding) করতে হয়। EF Core এর মাধ্যমে আপনি ডেটাবেস সিডিং পরিচালনা করতে পারেন।
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().HasData(
new Student { Id = 1, Name = "John Doe", Age = 22, Email = "john.doe@example.com" },
new Student { Id = 2, Name = "Jane Doe", Age = 23, Email = "jane.doe@example.com" }
);
}
এটি নতুন সিডিং ডেটা ডেটাবেসে ইনসার্ট করে যখন আপনি Update-Database
কমান্ড চালাবেন।
এভাবে, ডেটাবেসের পরিবর্তনগুলি মডেল ক্লাসে সিঙ্ক করা সম্ভব, এবং Entity Framework এর মাইগ্রেশন ব্যবস্থার মাধ্যমে ডেটাবেস এবং মডেল দুটির মধ্যে একাধিক সংস্করণের পার্থক্য সমাধান করা যায়।
Entity Framework (EF) একটি শক্তিশালী ORM (Object-Relational Mapping) টুল, যা ডেটাবেসের সাথে অ্যাপ্লিকেশনগুলিকে সহজে ইন্টিগ্রেট করতে সহায়তা করে। EF সাধারণত ডেটাবেসের টেবিলের সাথে কাজ করতে ব্যবহৃত হয়, তবে কখনও কখনও ডেটাবেসে জটিল কুয়েরি বা বিশেষ কার্যক্রমের জন্য Stored Procedures (স্টোরড প্রোসিডিওর) এবং Database Views (ডেটাবেস ভিউ) ব্যবহৃত হয়। EF এ এই দুটি ফিচারের ব্যবহার ডেটাবেস অপারেশনগুলিকে আরও শক্তিশালী ও কাস্টমাইজড করতে সাহায্য করে।
Stored Procedure একটি প্রিসেট SQL কোডের ব্লক যা ডেটাবেসে সংরক্ষিত থাকে এবং নির্দিষ্ট কার্যকলাপ সম্পাদন করার জন্য কল করা যায়। এটি একটি প্রি-কম্পাইলড SQL প্রোগ্রাম যা ডেটাবেস সার্ভারে রান করা হয় এবং ক্লায়েন্ট অ্যাপ্লিকেশন বা ইউজারের কাছ থেকে SQL কোডের ইনপুট ছাড়াই কার্যকরী হয়।
EF এ Stored Procedure ব্যবহার করার জন্য সাধারণত নিচের দুটি পদ্ধতি ব্যবহার করা হয়:
Direct Call to Stored Procedure: EF একটি DbContext এর মাধ্যমে স্টোরড প্রোসিডিওর কল করতে পারে। এটি SQL কুয়েরি এবং স্টোরড প্রোসিডিওর নির্বাহ করার জন্য FromSqlRaw
বা ExecuteSqlRaw
পদ্ধতি ব্যবহার করে।
উদাহরণ:
var result = context.MyEntities.FromSqlRaw("EXEC GetCustomerDetails {0}", customerId).ToList();
Stored Procedure Return Types: স্টোরড প্রোসিডিওর বিভিন্ন ধরনের ডেটা ফিরিয়ে দিতে পারে। EF এই ডেটা নির্দিষ্ট Entity ক্লাসে ম্যাপ করে নিতে সক্ষম।
উদাহরণ:
var result = context.Database.ExecuteSqlRaw("EXEC AddNewCustomer {0}, {1}", customerName, customerEmail);
Database View একটি ভার্চুয়াল টেবিল, যা এক বা একাধিক টেবিলের কুয়েরি থেকে তৈরি হয়। এটি ডেটাবেসের একটি স্টোর করা কুয়েরি যা টেবিলের মতো আচরণ করে, তবে এটি সরাসরি ডেটা ধারণ করে না। ভিউ ব্যবহার করে আপনি জটিল কুয়েরি একত্রিত করতে পারেন এবং অ্যাপ্লিকেশনের জন্য সহজ ডেটা রিট্রাইভাল নিশ্চিত করতে পারেন।
EF Database Views এর সাথে কাজ করতে সক্ষম। আপনি যেভাবে টেবিল ব্যবহার করেন, সেভাবে ভিউ ব্যবহার করতে পারেন। তবে EF সরাসরি ভিউ থেকে Entity ক্লাস তৈরি করার জন্য আপনার কিছু কাস্টম কনফিগারেশন করতে হতে পারে।
Create a View in the Database: প্রথমে আপনি ডেটাবেসে একটি ভিউ তৈরি করবেন। উদাহরণস্বরূপ:
CREATE VIEW CustomerDetails AS
SELECT CustomerId, Name, Email FROM Customers;
Map View to Entity in EF: এরপর EF তে সেই ভিউয়ের জন্য একটি Entity ক্লাস তৈরি করতে হবে। ভিউয়ের সাথে Entity ম্যাপ করতে হবে DbContext এর মধ্যে।
উদাহরণ:
public class CustomerDetail
{
public int CustomerId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class ApplicationDbContext : DbContext
{
public DbSet<CustomerDetail> CustomerDetails { get; set; }
}
Querying Data from the View: EF ব্যবহার করে ভিউ থেকে ডেটা অ্যাক্সেস করা যাবে যেমন টেবিল থেকে।
উদাহরণ:
var customerDetails = context.CustomerDetails.ToList();
Stored Procedures এবং Database Views Entity Framework এর সাথে ব্যবহার করা খুবই শক্তিশালী উপায়, বিশেষ করে জটিল ডেটাবেস অপারেশন বা কাস্টম ডেটা রিট্রাইভাল করার জন্য। Stored Procedures কেবল ডেটাবেসের কার্যক্রম দ্রুত করতে সাহায্য করে না, বরং নিরাপত্তা এবং কোড রিয়ুজেবিলিটি নিশ্চিত করে। অন্যদিকে, Database Views ডেটাকে আরো সহজ ও পরিষ্কারভাবে উপস্থাপন করতে সাহায্য করে এবং জটিল কুয়েরি লুকিয়ে রাখা সম্ভব হয়। EF এ এই দুটি ফিচার ব্যবহারের মাধ্যমে আপনি আরও শক্তিশালী, পারফরম্যান্স-বান্ধব এবং সুরক্ষিত অ্যাপ্লিকেশন তৈরি করতে পারেন।
common.read_more